﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using SistemaServidor.Classes;
using SistemaServidor.DataAccess;
using System.Data.Entity;

namespace SistemaServidor
{
    public class HospitalServices : IHospitalServices
    {
        private int IdDelHospital { get; set; }

        public HospitalServices()
        {
            Database.SetInitializer(new DropCreateDatabaseAlways<ServerContext>());
        }

        /// <summary>
        /// Registra un nuevo hospital
        /// </summary>
        /// <param name="nombre">Nombre del Hospital</param>
        /// <param name="contraseña">Contraseña de accesso</param>
        /// <returns>Devuelve el Codigo del hospital</returns>
        public string RegistrarHospital(string nombre, string contraseña)
        {
            string codigoGeneradoParaElHospital=GenerarCodigoParaElHospital(nombre);

            Hospital hospitalNuevo = new Hospital() { Codigo = codigoGeneradoParaElHospital, Contraseña=contraseña, Nombre=nombre};
            HospitalDataAccess.RegistrarHospital(hospitalNuevo);

            return codigoGeneradoParaElHospital;
        }


        /// <summary>
        /// Genera el Código del hospital
        /// </summary>
        /// <param name="nombreDelHospital">Nombre del Hopital</param>
        /// <returns>Retorna el código generado</returns>
        private string GenerarCodigoParaElHospital(string nombreDelHospital)
        {
            return nombreDelHospital[0] + DateTime.Now.Millisecond.ToString() + nombreDelHospital[1] + DateTime.Now.Minute.ToString();
        }


        public void HacerPedido(Pedido pedido)
        {
            pedido.PedidoId = IdDelHospital;
            HospitalDataAccess.GuardarPedido(pedido);
        }

        public List<Proveedor> ObtenerTodosLosProveedores()
        {
            return ProveedorDataAccess.ObtenerTodosLosProveedores();
        }


        public bool AutenticarHospital(string codigo, string contraseña)
        {
            IdDelHospital = HospitalDataAccess.AutenticarHospital(codigo, contraseña);

            if (IdDelHospital == -1)
                return false;
            else
                return true;
        }
    }
}
